/*
 * jQuery Nivo Slider v3.1
 * http://nivo.dev7studios.com
 *
 * Copyright 2012, Dev7studios
 * Free to use and abuse under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 */

(function(a){
    var b=function(b,c){
        var d=a.extend({},a.fn.nivoSlider.defaults,c);
        var e={
            currentSlide:0,
            currentImage:"",
            totalSlides:0,
            running:false,
            paused:false,
            stop:false,
            controlNavEl:false
        };
        
        var f=a(b);
        f.data("nivo:vars",e).addClass("nivoSlider");
        var g=f.children();
        g.each(function(){
            var b=a(this);
            var c="";
            if(!b.is("img")){
                if(b.is("a")){
                    b.addClass("nivo-imageLink");
                    c=b
                    }
                    b=b.find("img:first")
                }
                var d=d===0?b.attr("width"):b.width(),f=f===0?b.attr("height"):b.height();
            if(c!==""){
                c.css("display","none")
                }
                b.css("display","none");
            e.totalSlides++
        });
        if(d.randomStart){
            d.startSlide=Math.floor(Math.random()*e.totalSlides)
            }
            if(d.startSlide>0){
            if(d.startSlide>=e.totalSlides){
                d.startSlide=e.totalSlides-1
                }
                e.currentSlide=d.startSlide
            }
            if(a(g[e.currentSlide]).is("img")){
            e.currentImage=a(g[e.currentSlide])
            }else{
            e.currentImage=a(g[e.currentSlide]).find("img:first")
            }
            if(a(g[e.currentSlide]).is("a")){
            a(g[e.currentSlide]).css("display","block")
            }
            var h=a('<img class="nivo-main-image" src="#" />');
        h.attr("src",e.currentImage.attr("src")).show();
        f.append(h);
        a(window).resize(function(){
            f.children("img").width(f.width());
            h.attr("src",e.currentImage.attr("src"));
            h.stop().height("auto");
            a(".nivo-slice").remove();
            a(".nivo-box").remove()
            });
        f.append(a('<div class="nivo-caption"></div>'));
        var i=function(b){
            var c=a(".nivo-caption",f);
            if(e.currentImage.attr("title")!=""&&e.currentImage.attr("title")!=undefined){
                var d=e.currentImage.attr("title");
                if(d.substr(0,1)=="#")d=a(d).html();
                if(c.css("display")=="block"){
                    setTimeout(function(){
                        c.html(d)
                        },b.animSpeed)
                    }else{
                    c.html(d);
                    c.stop().fadeIn(b.animSpeed)
                    }
                }else{
            c.stop().fadeOut(b.animSpeed)
            }
        };
    
i(d);
    var j=0;
    if(!d.manualAdvance&&g.length>1){
    j=setInterval(function(){
        o(f,g,d,false)
        },d.pauseTime)
    }
    if(d.directionNav){
    f.append('<div class="nivo-directionNav"><a class="nivo-prevNav">'+d.prevText+'</a><a class="nivo-nextNav">'+d.nextText+"</a></div>");
    a("a.nivo-prevNav",f).live("click",function(){
        if(e.running){
            return false
            }
            clearInterval(j);
        j="";
        e.currentSlide-=2;
        o(f,g,d,"prev")
        });
    a("a.nivo-nextNav",f).live("click",function(){
        if(e.running){
            return false
            }
            clearInterval(j);
        j="";
        o(f,g,d,"next")
        })
    }
//    if(d.controlNav){
//    e.controlNavEl=a('<div class="nivo-controlNav"></div>');
//    f.after(e.controlNavEl);
//    for(var k=0;k<g.length;k++){
//        if(d.controlNavThumbs){
//            e.controlNavEl.addClass("nivo-thumbs-enabled");
//            var l=g.eq(k);
//            if(!l.is("img")){
//                l=l.find("img:first")
//                }
//                if(l.attr("data-thumb"))e.controlNavEl.append('<a class="nivo-control" rel="'+k+'"><img src="'+l.attr("data-thumb")+'" alt="" /></a>')
//                }else{
//            e.controlNavEl.append('<a class="nivo-control" rel="'+k+'">'+(k+1)+"</a>")
//            }
//        }
//    a("a:eq("+e.currentSlide+")",e.controlNavEl).addClass("active");
//    a("a",e.controlNavEl).bind("click",function(){
//    if(e.running)return false;
//    if(a(this).hasClass("active"))return false;
//    clearInterval(j);
//    j="";
//    h.attr("src",e.currentImage.attr("src"));
//    e.currentSlide=a(this).attr("rel")-1;
//    o(f,g,d,"control")
//    })
//}
if(d.pauseOnHover){
    f.hover(function(){
        e.paused=true;
        clearInterval(j);
        j=""
        },function(){
        e.paused=false;
        if(j===""&&!d.manualAdvance){
            j=setInterval(function(){
                o(f,g,d,false)
                },d.pauseTime)
            }
        })
}
f.bind("nivo:animFinished",function(){
    h.attr("src",e.currentImage.attr("src"));
    e.running=false;
    a(g).each(function(){
        if(a(this).is("a")){
            a(this).css("display","none")
            }
        });
if(a(g[e.currentSlide]).is("a")){
    a(g[e.currentSlide]).css("display","block")
    }
    if(j===""&&!e.paused&&!d.manualAdvance){
    j=setInterval(function(){
        o(f,g,d,false)
        },d.pauseTime)
    }
    d.afterChange.call(this)
    });
var m=function(b,c,d){
    if(a(d.currentImage).parent().is("a"))a(d.currentImage).parent().css("display","block");
    a('img[src="'+d.currentImage.attr("src")+'"]',b).not(".nivo-main-image,.nivo-control img").width(b.width()).css("visibility","hidden").show();
    var e=a('img[src="'+d.currentImage.attr("src")+'"]',b).not(".nivo-main-image,.nivo-control img").parent().is("a")?a('img[src="'+d.currentImage.attr("src")+'"]',b).not(".nivo-main-image,.nivo-control img").parent().height():a('img[src="'+d.currentImage.attr("src")+'"]',b).not(".nivo-main-image,.nivo-control img").height();
    for(var f=0;f<c.slices;f++){
        var g=Math.round(b.width()/c.slices);
        if(f===c.slices-1){
            b.append(a('<div class="nivo-slice" name="'+f+'"><img src="'+d.currentImage.attr("src")+'" style="position:absolute; width:'+b.width()+"px; height:auto; display:block !important; top:0; left:-"+(g+f*g-g)+'px;" /></div>').css({
                left:g*f+"px",
                width:b.width()-g*f+"px",
                height:e+"px",
                opacity:"0",
                overflow:"hidden"
            }))
            }else{
            b.append(a('<div class="nivo-slice" name="'+f+'"><img src="'+d.currentImage.attr("src")+'" style="position:absolute; width:'+b.width()+"px; height:auto; display:block !important; top:0; left:-"+(g+f*g-g)+'px;" /></div>').css({
                left:g*f+"px",
                width:g+"px",
                height:e+"px",
                opacity:"0",
                overflow:"hidden"
            }))
            }
        }
    a(".nivo-slice",b).height(e);
h.stop().animate({
    height:a(d.currentImage).height()
    },c.animSpeed)
};

var n=function(b,c,d){
    if(a(d.currentImage).parent().is("a"))a(d.currentImage).parent().css("display","block");
    a('img[src="'+d.currentImage.attr("src")+'"]',b).not(".nivo-main-image,.nivo-control img").width(b.width()).css("visibility","hidden").show();
    var e=Math.round(b.width()/c.boxCols),f=Math.round(a('img[src="'+d.currentImage.attr("src")+'"]',b).not(".nivo-main-image,.nivo-control img").height()/c.boxRows);
    for(var g=0;g<c.boxRows;g++){
        for(var i=0;i<c.boxCols;i++){
            if(i===c.boxCols-1){
                b.append(a('<div class="nivo-box" name="'+i+'" rel="'+g+'"><img src="'+d.currentImage.attr("src")+'" style="position:absolute; width:'+b.width()+"px; height:auto; display:block; top:-"+f*g+"px; left:-"+e*i+'px;" /></div>').css({
                    opacity:0,
                    left:e*i+"px",
                    top:f*g+"px",
                    width:b.width()-e*i+"px"
                    }));
                a('.nivo-box[name="'+i+'"]',b).height(a('.nivo-box[name="'+i+'"] img',b).height()+"px")
                }else{
                b.append(a('<div class="nivo-box" name="'+i+'" rel="'+g+'"><img src="'+d.currentImage.attr("src")+'" style="position:absolute; width:'+b.width()+"px; height:auto; display:block; top:-"+f*g+"px; left:-"+e*i+'px;" /></div>').css({
                    opacity:0,
                    left:e*i+"px",
                    top:f*g+"px",
                    width:e+"px"
                    }));
                a('.nivo-box[name="'+i+'"]',b).height(a('.nivo-box[name="'+i+'"] img',b).height()+"px")
                }
            }
        }
    h.stop().animate({
    height:a(d.currentImage).height()
    },c.animSpeed)
};

var o=function(b,c,d,e){
    var f=b.data("nivo:vars");
    if(f&&f.currentSlide===f.totalSlides-1){
        d.lastSlide.call(this)
        }
        if((!f||f.stop)&&!e){
        return false
        }
        d.beforeChange.call(this);
    if(!e){
        h.attr("src",f.currentImage.attr("src"))
        }else{
        if(e==="prev"){
            h.attr("src",f.currentImage.attr("src"))
            }
            if(e==="next"){
            h.attr("src",f.currentImage.attr("src"))
            }
        }
    f.currentSlide++;
if(f.currentSlide===f.totalSlides){
    f.currentSlide=0;
    d.slideshowEnd.call(this)
    }
    if(f.currentSlide<0){
    f.currentSlide=f.totalSlides-1
    }
    if(a(c[f.currentSlide]).is("img")){
    f.currentImage=a(c[f.currentSlide])
    }else{
    f.currentImage=a(c[f.currentSlide]).find("img:first")
    }
    if(d.controlNav){
    a("a",f.controlNavEl).removeClass("active");
    a("a:eq("+f.currentSlide+")",f.controlNavEl).addClass("active")
    }
    i(d);
a(".nivo-slice",b).remove();
a(".nivo-box",b).remove();
var g=d.effect,j="";
if(d.effect==="random"){
    j=new Array("sliceDownRight","sliceDownLeft","sliceUpRight","sliceUpLeft","sliceUpDown","sliceUpDownLeft","fold","fade","boxRandom","boxRain","boxRainReverse","boxRainGrow","boxRainGrowReverse");
    g=j[Math.floor(Math.random()*(j.length+1))];
    if(g===undefined){
        g="fade"
        }
    }
if(d.effect.indexOf(",")!==-1){
    j=d.effect.split(",");
    g=j[Math.floor(Math.random()*j.length)];
    if(g===undefined){
        g="fade"
        }
    }
if(f.currentImage.attr("data-transition")){
    g=f.currentImage.attr("data-transition")
    }
    f.running=true;
var k=0,l=0,o="",q="",r="",s="";
if(g==="sliceDown"||g==="sliceDownRight"||g==="sliceDownLeft"){
    m(b,d,f);
    k=0;
    l=0;
    o=a(".nivo-slice",b);
    if(g==="sliceDownLeft"){
        o=a(".nivo-slice",b)._reverse()
        }
        o.each(function(){
        var c=a(this);
        c.css({
            top:"0px"
        });
        if(l===d.slices-1){
            setTimeout(function(){
                c.animate({
                    opacity:"1.0"
                },d.animSpeed,"",function(){
                    b.trigger("nivo:animFinished")
                    })
                },100+k)
            }else{
            setTimeout(function(){
                c.animate({
                    opacity:"1.0"
                },d.animSpeed)
                },100+k)
            }
            k+=50;
        l++
    })
    }else if(g==="sliceUp"||g==="sliceUpRight"||g==="sliceUpLeft"){
    m(b,d,f);
    k=0;
    l=0;
    o=a(".nivo-slice",b);
    if(g==="sliceUpLeft"){
        o=a(".nivo-slice",b)._reverse()
        }
        o.each(function(){
        var c=a(this);
        c.css({
            bottom:"0px"
        });
        if(l===d.slices-1){
            setTimeout(function(){
                c.animate({
                    opacity:"1.0"
                },d.animSpeed,"",function(){
                    b.trigger("nivo:animFinished")
                    })
                },100+k)
            }else{
            setTimeout(function(){
                c.animate({
                    opacity:"1.0"
                },d.animSpeed)
                },100+k)
            }
            k+=50;
        l++
    })
    }else if(g==="sliceUpDown"||g==="sliceUpDownRight"||g==="sliceUpDownLeft"){
    m(b,d,f);
    k=0;
    l=0;
    var t=0;
    o=a(".nivo-slice",b);
    if(g==="sliceUpDownLeft"){
        o=a(".nivo-slice",b)._reverse()
        }
        o.each(function(){
        var c=a(this);
        if(l===0){
            c.css("top","0px");
            l++
        }else{
            c.css("bottom","0px");
            l=0
            }
            if(t===d.slices-1){
            setTimeout(function(){
                c.animate({
                    opacity:"1.0"
                },d.animSpeed,"",function(){
                    b.trigger("nivo:animFinished")
                    })
                },100+k)
            }else{
            setTimeout(function(){
                c.animate({
                    opacity:"1.0"
                },d.animSpeed)
                },100+k)
            }
            k+=50;
        t++
    })
    }else if(g==="fold"){
    m(b,d,f);
    k=0;
    l=0;
    a(".nivo-slice",b).each(function(){
        var c=a(this);
        var e=c.width();
        c.css({
            top:"0px",
            width:"0px"
        });
        if(l===d.slices-1){
            setTimeout(function(){
                c.animate({
                    width:e,
                    opacity:"1.0"
                },d.animSpeed,"",function(){
                    b.trigger("nivo:animFinished")
                    })
                },100+k)
            }else{
            setTimeout(function(){
                c.animate({
                    width:e,
                    opacity:"1.0"
                },d.animSpeed)
                },100+k)
            }
            k+=50;
        l++
    })
    }else if(g==="fade"){
    m(b,d,f);
    q=a(".nivo-slice:first",b);
    q.css({
        width:b.width()+"px"
        });
    q.animate({
        opacity:"1.0"
    },d.animSpeed*2,"",function(){
        b.trigger("nivo:animFinished")
        })
    }else if(g==="slideInRight"){
    m(b,d,f);
    q=a(".nivo-slice:first",b);
    q.css({
        width:"0px",
        opacity:"1"
    });
    q.animate({
        width:b.width()+"px"
        },d.animSpeed*2,"",function(){
        b.trigger("nivo:animFinished")
        })
    }else if(g==="slideInLeft"){
    m(b,d,f);
    q=a(".nivo-slice:first",b);
    q.css({
        width:"0px",
        opacity:"1",
        left:"",
        right:"0px"
    });
    q.animate({
        width:b.width()+"px"
        },d.animSpeed*2,"",function(){
        q.css({
            left:"0px",
            right:""
        });
        b.trigger("nivo:animFinished")
        })
    }else if(g==="boxRandom"){
    n(b,d,f);
    r=d.boxCols*d.boxRows;
    l=0;
    k=0;
    s=p(a(".nivo-box",b));
    s.each(function(){
        var c=a(this);
        if(l===r-1){
            setTimeout(function(){
                c.animate({
                    opacity:"1"
                },d.animSpeed,"",function(){
                    b.trigger("nivo:animFinished")
                    })
                },100+k)
            }else{
            setTimeout(function(){
                c.animate({
                    opacity:"1"
                },d.animSpeed)
                },100+k)
            }
            k+=20;
        l++
    })
    }else if(g==="boxRain"||g==="boxRainReverse"||g==="boxRainGrow"||g==="boxRainGrowReverse"){
    n(b,d,f);
    r=d.boxCols*d.boxRows;
    l=0;
    k=0;
    var u=0;
    var v=0;
    var w=[];
    w[u]=[];
    s=a(".nivo-box",b);
    if(g==="boxRainReverse"||g==="boxRainGrowReverse"){
        s=a(".nivo-box",b)._reverse()
        }
        s.each(function(){
        w[u][v]=a(this);
        v++;
        if(v===d.boxCols){
            u++;
            v=0;
            w[u]=[]
            }
        });
for(var x=0;x<d.boxCols*2;x++){
    var y=x;
    for(var z=0;z<d.boxRows;z++){
        if(y>=0&&y<d.boxCols){
            (function(c,e,f,h,i){
                var j=a(w[c][e]);
                var k=j.width();
                var l=j.height();
                if(g==="boxRainGrow"||g==="boxRainGrowReverse"){
                    j.width(0).height(0)
                    }
                    if(h===i-1){
                    setTimeout(function(){
                        j.animate({
                            opacity:"1",
                            width:k,
                            height:l
                        },d.animSpeed/1.3,"",function(){
                            b.trigger("nivo:animFinished")
                            })
                        },100+f)
                    }else{
                    setTimeout(function(){
                        j.animate({
                            opacity:"1",
                            width:k,
                            height:l
                        },d.animSpeed/1.3)
                        },100+f)
                    }
                })(z,y,k,l,r);
        l++
    }
    y--
    }
    k+=100
}
}
};

var p=function(a){
    for(var b,c,d=a.length;d;b=parseInt(Math.random()*d,10),c=a[--d],a[d]=a[b],a[b]=c);
    return a
    };
    
var q=function(a){
    if(this.console&&typeof console.log!=="undefined"){
        console.log(a)
        }
    };

this.stop=function(){
    if(!a(b).data("nivo:vars").stop){
        a(b).data("nivo:vars").stop=true;
        q("Stop Slider")
        }
    };

this.start=function(){
    if(a(b).data("nivo:vars").stop){
        a(b).data("nivo:vars").stop=false;
        q("Start Slider")
        }
    };

d.afterLoad.call(this);
return this
};

a.fn.nivoSlider=function(c){
    return this.each(function(d,e){
        var f=a(this);
        if(f.data("nivoslider")){
            return f.data("nivoslider")
            }
            var g=new b(this,c);
        f.data("nivoslider",g)
        })
    };
    
a.fn.nivoSlider.defaults={
    effect:"random",
    slices:15,
    boxCols:8,
    boxRows:4,
    animSpeed:400,
    pauseTime:3e3,
    startSlide:0,
    directionNav:true,
    controlNav:true,
    controlNavThumbs:false,
    pauseOnHover:true,
    manualAdvance:false,
    prevText:"Prev",
    nextText:"Next",
    randomStart:false,
    beforeChange:function(){},
    afterChange:function(){},
    slideshowEnd:function(){},
    lastSlide:function(){},
    afterLoad:function(){}
};

a.fn._reverse=[].reverse
})(jQuery)